﻿

namespace GaleSong
{
    /// <summary>
    ///     Denotes selectable.
    /// </summary>
    public interface ISelectable
    {
        bool IsSelected { get; set; }
    }

    /// <summary>
    ///     Denotes a small UI page that can navigate.
    /// </summary>
    public interface IPage : IView, ISelectable
    {
        void Initialize();
    }

    /// <summary>
    ///     Denotes a manager class that manage the <see cref="IPage" />s.
    /// </summary>
    public interface IPageManager<T> where T : IPage
    {
        IObservableCollection<T> Items { get; }
        T this[string name] { get; }
    }

    /// <summary>
    ///     Denotes a wizard page.
    /// </summary>
    public interface IWizardPage : IPage
    {
        void Enter();
        void Leave();
    }
}